`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 11/16/2021 10:57:08 PM
// Design Name: 
// Module Name: config_test
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module config_test(
    input clk,
    input key1,
    input key2,
    input rst1,
    output [6:0] out,
    output [3:0] out_en,
    output isLong
    );
    wire key_value1,key_value2,key_p1,key_p2,key_n1,key_n2,key_fin1,key_fin2,key_plus,key_last1,key_last2,cout_work,cout_rest,en_work,en_rest;
    wire div;
    wire [3:0] work0,work1,rest0,rest1,out0,out1,out_fin;
    eliminator elimin1(
        .rst_n(rst1),
        .clk(clk),
        .key(key1),
        .key_value(key_value1),
        .key_p_flag(key_p1),
        .key_n_flag(key_n1)
    );
    eliminator elimin2(
        .rst_n(rst1),
        .clk(clk),
        .key(key2),
        .key_value(key_value2),
        .key_p_flag(key_p2),
        .key_n_flag(key_n2)
    );
    key_last_control last_inst2(
        .clk(clk),
        .rst_n(rst1),
        .key_p_flag(key_p2),
        .key_n_flag(key_n2),
        .last(key_last2),
        .key_value(key_fin2)
    ); 
    long_short_selector lss(
        .key_short(key_fin2),
        .clk(clk),
        .key_last(key_last2),
        .key_value(key_value2),
        .rst_n(rst1),
        .key_out(key_plus),
        .isLong(isLong)
    );
    deathadder work_add0(
        .rst_n(rst1),
        .clk(clk),
        .en(en_work),
        .key_add(key_plus),
        .LD(5),
        .out(work0),
        .cout(cout_work)
    );
    deathadder work_add1(
        .rst_n(rst1),
        .clk(clk),
        .en(en_work),
        .key_add(cout_work),
        .LD(2),
        .out(work1)
    );
    deathadder rest_add0(
        .rst_n(rst1),
        .clk(clk),
        .en(en_rest),
        .key_add(key_plus),
        .LD(5),
        .out(rest0),
        .cout(cout_rest)
    );
    deathadder rest_add1(
        .rst_n(rst1),
        .clk(clk),
        .en(en_rest),
        .key_add(cout_rest),
        .LD(0),
        .out(rest1)
    );
    configManager myconfig(
        .clk(clk),
        .rst_n(rst1),
        .key_mode(key_n1),
        .en_work(en_work),
        .en_rest(en_rest)
    );
    displaySelect select(
        .clk(clk),
        .rst_n(rst1),
        .en(en_work),
        .work0(work0),
        .work1(work1),
        .rest0(rest0),
        .rest1(rest1),
        .out0(out0),
        .out1(out1)
    );
    time_div div_inst(
        .cp(clk),
        .rst(rst1),
        .out(div)
    );
    sweeper sweep(
        .in0(out0),
        .in1(out1),
        .in2(7),
        .in3(7),
        .cpdiv(div),
        .rst(rst1),
        .out(out_fin),
        .en(out_en)
    );
    sevenSegmentDecoder decoder_inst(
        .in(out_fin),
        .out(out)
    );
endmodule
